package cz.data.domain.metadata.service;

import cz.data.common.mybatis.BaseService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cz.data.domain.metadata.model.dto.MetadataTableDto;
import cz.data.domain.metadata.model.entity.MetadataTableEntity;
import cz.data.domain.metadata.model.query.MetadataTableQuery;

import java.util.List;

public interface MetadataTableService extends BaseService<MetadataTableEntity> {

    MetadataTableEntity saveMetadataTable(MetadataTableDto metadataTable);

    MetadataTableEntity updateMetadataTable(MetadataTableDto metadataTable);

    MetadataTableEntity getMetadataTableById(String id);

    void deleteMetadataTableById(String id);

    void deleteMetadataTableBatch(List<String> ids);

    void deleteMetadataTableBySourceId(String sourceId);

    List<MetadataTableEntity> getDataMetadataTableList(MetadataTableQuery metadataTableQuery);

    <E extends IPage<MetadataTableEntity>> E pageWithAuth(E page, Wrapper<MetadataTableEntity> queryWrapper);

    List<MetadataTableEntity> getMetadataTableBySourceId(String sourceId);

    MetadataTableEntity getMetadataTableBySourceIdAndTableName(String source, String table);
}
